import axios from "axios";
import type { AxiosResponse } from "axios";
const instance = axios.create({
	baseURL: '/api',
	timeout: 10000,
});
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
	// 在发送请求之前做些什么
	let token = localStorage.getItem('token')
	if (token) {
		config.headers.Authorization = `Bearer ${token}`
	}
	return config;
}, function (error) {
	// 对请求错误做些什么
	return Promise.reject(error);
});
// 添加响应拦截器
instance.interceptors.response.use(function (response: AxiosResponse) {
	// 2xx 范围内的状态码都会触发该函数。
	// 对响应数据做点什么
	return response;
}, function (error) {
	// 超出 2xx 范围的状态码都会触发该函数。
	// 对响应错误做点什么
	// 服务器返回了错误状态码
	const { status } = error.response;
	switch (status) {
		case 400:
			console.error('请求参数错误');
			break;
		case 401:
			console.error('未授权访问:');
			localStorage.clear();
			window.location.href = '/login';
			break;
		case 403:
			console.error('禁止访问:');
			break;
		case 404:
			console.error('请求的资源不存在');
			break;
		case 429:
			console.error('请求过于频繁',);
			break;
		case 500:
			console.error('服务器内部错误');
			break;
		default:
			console.error(`请求失败 (${status})`);
	}
	return Promise.reject(error);
})
export default instance